package com.wo.cloud.security;

import io.jsonwebtoken.*;
import org.springframework.stereotype.Component;

import java.util.Date;

/**
 * @author liry
 * @version 1.0
 * @date Created on 2021/4/18 22:42
 * Description: token 创建解析类
 */

@Component
public class TokenManager {

    // 设置token有效时长
    private long tokenExpireTime = 60 * 60 * 1000;

    // 签名密钥
    private String tokenSignKey = "12345678";


    // 根据用户名生成token

    public String createToken(String username) {
        return Jwts.builder().setSubject(username)
                // 设置过期时间
                .setExpiration(new Date(System.currentTimeMillis() + tokenExpireTime))
                // 设置加密算法
                .signWith(SignatureAlgorithm.HS512, tokenSignKey)
                // 设置压缩类型
                .compressWith(CompressionCodecs.GZIP)
                .compact();
    }

    // 根据token解析出用户信息
    public String getUserInfoByToken(String token) {
        Jws<Claims> claimsJws = Jwts.parser().setSigningKey(tokenSignKey).parseClaimsJws(token);
        // 获取解析数据
        Claims body = claimsJws.getBody();
        // 获取签名信息
        String signature = claimsJws.getSignature();
        // 获取头信息
        JwsHeader header = claimsJws.getHeader();

        // 获取用户名信息
        return body.getSubject();
    }

    public void removeToken(String token){

    }
}
